package com.hengpeng.itfints.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import com.hengpeng.itfints.dao.DaoFactory;
import com.hengpeng.itfints.port.PortActiveFactory;
import com.hengpeng.itfints.port.PortFactory;
import com.hengpeng.itfints.service.CommonService;
import com.hengpeng.itfints.service.PersistService;
import com.hengpeng.itfints.service.ServiceFactory;
import com.hengpeng.itfints.service.UserService;
import com.hengpeng.itfints.service.account.AccountService;
import com.hengpeng.itfints.service.article.ArticleService;
import com.hengpeng.itfints.service.assign.AssignService;
import com.hengpeng.itfints.service.bankproduct.BankProductService;
import com.hengpeng.itfints.service.borrowInfo.BorrowInfoService;
import com.hengpeng.itfints.service.invest.InvestInfoService;
import com.hengpeng.itfints.service.links.LinksService;
import com.hengpeng.itfints.service.message.MessageService;
import com.hengpeng.itfints.service.notice.ProjectService;
import com.hengpeng.itfints.service.payment.PaymentService;
import com.hengpeng.itfints.service.repayment.RepaymentService;
import com.hengpeng.itfints.service.userInfo.UserBankCardService;

@Service
public class ServiceFactoryImpl implements ServiceFactory {
    @Autowired
    @Qualifier("portFactoryImpl")
    private PortFactory protFactory;

    @Autowired
    private DaoFactory daoFactory;

    @Autowired
    @Qualifier("portFactoryActiveImpl")
    private PortActiveFactory portActiveFactory;

    @Autowired
    private UserService userService;

    @Autowired
    private MessageService messageService;

    @Autowired
    private LinksService linksService;

    @Autowired
    private BorrowInfoService borrowInfoService;

    @Autowired
    private RepaymentService repaymentService;

    @Autowired
    private InvestInfoService investInfoService;

    @Autowired
    private AccountService accountService;

    @Autowired
    private PaymentService paymentService;

    @Autowired
    @Qualifier("remotePersistServiceImpl")
    private PersistService persistServcie;

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private AssignService assignService;

    @Autowired
    private UserBankCardService userBankCardService;

    @Autowired
    private CommonService commonService;

    @Autowired
    private BankProductService bankProductService;

    @Autowired
    private ProjectService projectService;

    @Autowired
    private ArticleService articleService;

    @Override
    public DaoFactory getDaoFactory() {
        return daoFactory;
    }

    @Override
    public PortActiveFactory getPortActiveFactory() {
        return portActiveFactory;
    }

    @Override
    public ProjectService getProjectService() {
        return projectService;
    }

    @Override
    public BankProductService getBankProductService() {
        return bankProductService;
    }

    public ArticleService getArticleService() {
        return articleService;
    };

    @Override
    public CommonService getCommonService() {
        return commonService;
    }

    @Override
    public UserBankCardService getUserBankCardService() {
        return userBankCardService;
    }

    @Override
    public AssignService getAssignService() {
        return assignService;
    }

    public PortFactory getProtFactory() {
        return protFactory;
    }

    @Override
    public UserService getUserService() {
        return userService;
    }

    public MessageService getMessageService() {
        return messageService;
    }

    @Override
    public LinksService getLinksService() {
        return linksService;
    }

    @Override
    public BorrowInfoService getBorrowInfoService() {
        return borrowInfoService;
    }

    @Override
    public RepaymentService getRepaymentService() {
        return repaymentService;
    }

    @Override
    public InvestInfoService getInvestInfoService() {
        return investInfoService;
    }

    @Override
    public AccountService getAccountService() {
        return accountService;
    }

    @Override
    public PaymentService getPaymentService() {
        return paymentService;
    }

    @Override
    public PersistService getPersistService() {
        return persistServcie;
    }

    @Override
    public RestTemplate getRestTemplate() {
        return restTemplate;
    }

}
